Design software applications are a subclass of application software used for graphic design, multimedia development, specialized image development, image editing, or simply to access graphic files. Conventional design applications utilize either raster or vector graphic reading and editing methods to create, edit, and view digital media (e.g. animations, graphics, images, designs, media objects, etc.). Some conventional design applications, such as graphics programs, focus exclusively on either vector or raster graphics, but there are a few that combine them. Advantages of vector graphics include efficient storage of graphics data and easy scaling to accommodate a wide variety of resolutions across many different display devices and media types.
The geometry of vector graphics artwork can be defined by a set of cubic Bezier curves. Coloring of such artwork can be accomplished by fills and gradients. However, the coloring in such a case may be limited in complexity. Such gradients and fills are also uncoupled from the overall artwork geometry and often must be redone manually if a user alters the artwork geometry, limiting the creativity and expressiveness of the user.
More complex coloring can be made available by allowing the user to create diffusion curves. Diffusion curves are vector graphic primitives for creating smooth-shaded images. Each diffusion curve partitions the geometric space through which it is drawn, defining different colors on either side. When rendered, these colors then spread into the regions on both sides of the curve in a way analogous to diffusion. The colors may also be defined to vary smoothly along the curve and the sharpness of the color transition from one side of the curve to the other may also be specified. Even though diffusion curves offer a rich coloring model they are not intuitive to use, and it is difficult to control the color values at the time of creation. The use of diffusion curves necessitates color being computed for every pixel of the artwork whenever a change is made, which is computationally expensive.